<?php

declare(strict_types=1);

/**
 *​
 * HomeController.php
 *
 * User：Abell
 * Date：2020/4/11
 * Time：13:20
 */

namespace App\Controller\Home;

use App\Controller\BaseController;
use Hyperf\DbConnection\Db;

class HomeController extends BaseController
{
    /**
     * home
     * 前台首页
     * User：Abell
     * Date：2020/4/11
     * Time：13:22
     */
    public function index(){
        $user = $this->request->input('user', 'home Hyperf');
        $method = $this->request->getMethod();

        return [
            'method' => $method,
            'message' => "Hello {$user}.",
        ];
    }
    /**
     * home
     * 测试数据库查询  原生sql查询
     * User：Abell
     * Date：2020/4/11
     * Time：13:22
     */
    public function get_user(){
        $users = Db::select('SELECT * FROM ymkj_user ');
        foreach($users as $user){
            echo $user->name;
        }
        return $users;
    }

    // 原生sql插入和修改数据
    public function insert_user(){
        //  1 原生sql插入和修改数据
        // $user_data = Db::insert("INSERT INTO `ymkj_aaa` ( `name`) VALUES ( 'hello');");
        // return $user_data;

        // 2 自动管理数据库事务
        // $auto_manage = Db::transaction(function () {
        //     Db::table('ymkj_aaa')->insert(['name' => 'xixi1']);
        //     // Db::table('posts')->delete();
        // });
        // return $auto_manage;
        // 这样的管理没有返回值


        // 3 手动管理
        $abell=1;
        Db::beginTransaction();
        try{
            Db::table('ymkj_aaa')->insert(['name' => 'xixi3']);
            Db::commit();
        } catch(\Throwable $ex){
            Db::rollBack();
            $abell = 0;
        }
        if($abell){
            return ['statue'=>200,'msg'=>'It is successful'];
        }else{
            return ['statue'=>0,'msg'=>'Error'];
        }
        // 这样的也没有返回值,执行成功了就自己

    }

    // 异步非阻塞系统
    public function async_ae(){
        $db->connect($config, function ($db, $r){
            $sql = 'SELECT * FROM ymkj_aaa WHERE id = 1';
            $db->query($sql, function(swoole_mysql $db, $r){
                if ($r !== false){
                    $updateSql = "UPDATE ymkj_aaa set `name` = 'helloabell' WHERE id = 1";
                    $db->query($updateSql, function(swoole_mysql $db, $r){
                        $rows = $db->affected_rows;
                        if($r === true){
                            return $this->response->end("update successful");
                        }
                    });
                }
                $db->close();
            });
        });
        
    }

    



}